package com.sczmgk.hotline_pzh.base;

import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Message;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

import com.sczmgk.hotline_pzh.R;
import com.sczmgk.hotline_pzh.utils.Tools;

/**
 * Created by Administrator on 2017/1/12.
 */

public abstract class WebViewBaseActivity extends BaseActivity {

    /*资讯缓存*/
    public static final String APP_CACHE_DIRNAME = "/webcache";
    protected WebView mWebView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_news_detail);
    }

    /**
     * 初始化控件
     */
    protected void initView() {

        mWebView = (WebView) findViewById(R.id.wv_news_detail);

        // 设置 缓存模式
        mWebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
        // 开启 DOM storage API 功能
        mWebView.getSettings().setDomStorageEnabled(true);
        // 开启 database storage API 功能
        mWebView.getSettings().setDatabaseEnabled(true);
        String cacheDirPath = getFilesDir().getAbsolutePath() + APP_CACHE_DIRNAME;
        // 设置数据库缓存路径
        mWebView.getSettings().setDatabasePath(cacheDirPath);
        // 设置  Application Caches 缓存目录
        mWebView.getSettings().setAppCachePath(cacheDirPath);
        // 开启 Application Caches 功能
        mWebView.getSettings().setAppCacheEnabled(true);
        // 支持javascript
        mWebView.getSettings().setJavaScriptEnabled(true);
        // 设置可以支持缩放
        mWebView.getSettings().setSupportZoom(true);
        // 设置出现缩放工具
//        webView.getSettings().setBuiltInZoomControls(true);
        // 扩大比例的缩放
        mWebView.getSettings().setUseWideViewPort(true);
        // 自适应屏幕
        mWebView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
        mWebView.getSettings().setLoadWithOverviewMode(true);

        String urlPath = getUrl();
        //加载url
        if (!Tools.isEmpty(urlPath)) {
            mWebView.loadUrl(urlPath);
        }

        // 加载网页
        mWebView.setWebViewClient(new WebViewClient() {
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                // 重写此方法表明点击网页里面的链接还是在当前的webview里跳转，不跳到浏览器那边
                view.loadUrl(url);
                return true;
            }

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                //当页面开始加载的时候
                onWebViewPageStarted();
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                //当页面加载完成的时候
                onWebViewPageFinished();
            }

            @Override
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                //当页面加载失败时
                onWebViewReceivedError() ;
            }
        });

    }

    /**
     * 获取要加载的url
     * @return
     */
    protected abstract String getUrl();

    /**
     * 当页面开始加载的时候
     */
    protected abstract void onWebViewPageStarted() ;

    /**
     * 当页面加载失败的时候
     */
    protected abstract void onWebViewPageFinished() ;

    /**
     * 当页面开始加载的时候
     */
    protected abstract void onWebViewReceivedError() ;

    @Override
    public void handleMessage(Message msg) {

    }

    @Override
    public boolean getIsNeedLogin() {
        return false;
    }
}
